using System;
using MicrosoftResearch.Infer;
using MicrosoftResearch.Infer.Distributions;
using MicrosoftResearch.Infer.Collections;
using MicrosoftResearch.Infer.Factors;

namespace MicrosoftResearch.Infer.Models.User
{
	/// <summary>
	/// Class for performing inference in model 'Model' using algorithm 'ExpectationPropagation'.
	/// </summary>
	/// <remarks>
	/// The easiest way to use this class is to wrap an instance in a CompiledAlgorithm object and use
	/// the methods on CompiledAlgorithm to set parameters and execute inference.
	/// 
	/// If you instead wish to use this class directly, you must perform the following steps:
	/// 1) Create an instance of the class
	/// 2) Set the value of any externally-set fields e.g. data, priors
	/// 3) Call the Reset() method
	/// 4) Call the Initialise() method once
	/// 5) Call the Update() method multiple times  - each call performs one iteration of inference
	/// 6) Use the XXXMarginal() methods to retrieve posterior marginals for different variables.
	/// 
	/// Generated by Infer.NET 2.3 beta 4 at 19:26 on 29 May 2010.
	/// </remarks>
	public class Model12_EP : IIterativeProcess
	{
		#region Fields
		// Messages from uses of 'vbool36'
		public Bernoulli[] vbool36_uses_B;
		// The constant 'vBernoulli44'
		public Bernoulli vBernoulli44;
		// Message from definition of 'vbool36'
		public Bernoulli vbool36_F;
		// Messages from uses of 'vbool28'
		public Bernoulli[] vbool28_uses_B;
		// The constant 'vBernoulli36'
		public Bernoulli vBernoulli36;
		// Message from definition of 'vbool28'
		public Bernoulli vbool28_F;
		// Messages from uses of 'vbool303'
		public Bernoulli[] vbool303_uses_B;
		// Message from definition of 'vbool303'
		public Bernoulli vbool303_F;
		// Messages from uses of 'vbool140'
		public Bernoulli[] vbool140_uses_B;
		// The constant 'vBernoulli148'
		public Bernoulli vBernoulli148;
		// Message from definition of 'vbool140'
		public Bernoulli vbool140_F;
		// Messages from uses of 'vbool367'
		public Bernoulli[] vbool367_uses_B;
		// Message from definition of 'vbool367'
		public Bernoulli vbool367_F;
		// Messages from uses of 'vbool124'
		public Bernoulli[] vbool124_uses_B;
		// The constant 'vBernoulli132'
		public Bernoulli vBernoulli132;
		// Message from definition of 'vbool124'
		public Bernoulli vbool124_F;
		// Messages from uses of 'vbool351'
		public Bernoulli[] vbool351_uses_B;
		// Message from definition of 'vbool351'
		public Bernoulli vbool351_F;
		// Messages from uses of 'vbool132'
		public Bernoulli[] vbool132_uses_B;
		// The constant 'vBernoulli140'
		public Bernoulli vBernoulli140;
		// Message from definition of 'vbool132'
		public Bernoulli vbool132_F;
		// Messages from uses of 'vbool359'
		public Bernoulli[] vbool359_uses_B;
		// Message from definition of 'vbool359'
		public Bernoulli vbool359_F;
		// Messages from uses of 'vbool101'
		public Bernoulli[] vbool101_uses_B;
		// The constant 'vBernoulli109'
		public Bernoulli vBernoulli109;
		// Message from definition of 'vbool101'
		public Bernoulli vbool101_F;
		// Messages from uses of 'vbool343'
		public Bernoulli[] vbool343_uses_B;
		// Message from definition of 'vbool343'
		public Bernoulli vbool343_F;
		// Messages from uses of 'vbool62'
		public Bernoulli[] vbool62_uses_B;
		// The constant 'vBernoulli70'
		public Bernoulli vBernoulli70;
		// Message from definition of 'vbool62'
		public Bernoulli vbool62_F;
		// Messages from uses of 'vbool327'
		public Bernoulli[] vbool327_uses_B;
		// Message from definition of 'vbool327'
		public Bernoulli vbool327_F;
		// Messages from uses of 'vbool179'
		public Bernoulli[] vbool179_uses_B;
		// The constant 'vBernoulli187'
		public Bernoulli vBernoulli187;
		// Message from definition of 'vbool179'
		public Bernoulli vbool179_F;
		// Messages from uses of 'vbool471'
		public Bernoulli[] vbool471_uses_B;
		// Message from definition of 'vbool471'
		public Bernoulli vbool471_F;
		// Messages from uses of 'vbool54'
		public Bernoulli[] vbool54_uses_B;
		// The constant 'vBernoulli62'
		public Bernoulli vBernoulli62;
		// Message from definition of 'vbool54'
		public Bernoulli vbool54_F;
		// Messages from uses of 'vbool311'
		public Bernoulli[] vbool311_uses_B;
		// Message from definition of 'vbool311'
		public Bernoulli vbool311_F;
		// Messages from uses of 'vbool80'
		public Bernoulli[] vbool80_uses_B;
		// The constant 'vBernoulli88'
		public Bernoulli vBernoulli88;
		// Message from definition of 'vbool80'
		public Bernoulli vbool80_F;
		// Messages from uses of 'vbool319'
		public Bernoulli[] vbool319_uses_B;
		// Message from definition of 'vbool319'
		public Bernoulli vbool319_F;
		// Messages from uses of 'vbool171'
		public Bernoulli[] vbool171_uses_B;
		// The constant 'vBernoulli179'
		public Bernoulli vBernoulli179;
		// Message from definition of 'vbool171'
		public Bernoulli vbool171_F;
		// Messages from uses of 'vbool440'
		public Bernoulli[] vbool440_uses_B;
		// Message from definition of 'vbool440'
		public Bernoulli vbool440_F;
		// Messages from uses of 'vbool10'
		public Bernoulli[] vbool10_uses_B;
		// The constant 'vBernoulli18'
		public Bernoulli vBernoulli18;
		// Message from definition of 'vbool10'
		public Bernoulli vbool10_F;
		// Messages from uses of 'vbool295'
		public Bernoulli[] vbool295_uses_B;
		// Message from definition of 'vbool295'
		public Bernoulli vbool295_F;
		// Messages from uses of 'vbool88'
		public Bernoulli[] vbool88_uses_B;
		// The constant 'vBernoulli96'
		public Bernoulli vBernoulli96;
		// Message from definition of 'vbool88'
		public Bernoulli vbool88_F;
		// Messages from uses of 'vbool335'
		public Bernoulli[] vbool335_uses_B;
		// Message from definition of 'vbool335'
		public Bernoulli vbool335_F;
		// Messages from uses of 'vbool153'
		public Bernoulli[] vbool153_uses_B;
		// The constant 'vBernoulli161'
		public Bernoulli vBernoulli161;
		// Message from definition of 'vbool153'
		public Bernoulli vbool153_F;
		// Messages from uses of 'vbool432'
		public Bernoulli[] vbool432_uses_B;
		// Message from definition of 'vbool432'
		public Bernoulli vbool432_F;
		// Messages from uses of 'vbool472'
		public Bernoulli[] vbool472_uses_B;
		// Message from definition of 'vbool472'
		public Bernoulli vbool472_F;
		// Message to definition of 'vbool303'
		public Bernoulli vbool303_B;
		// Messages to uses of 'vbool28'
		public Bernoulli[] vbool28_uses_F;
		// Messages to uses of 'vbool36'
		public Bernoulli[] vbool36_uses_F;
		// Message to definition of 'vbool367'
		public Bernoulli vbool367_B;
		// Messages to uses of 'vbool140'
		public Bernoulli[] vbool140_uses_F;
		// The constant 'vBernoulli5'
		public Bernoulli vBernoulli5;
		// Message to definition of 'vbool351'
		public Bernoulli vbool351_B;
		// Messages to uses of 'vbool124'
		public Bernoulli[] vbool124_uses_F;
		// Message to definition of 'vbool359'
		public Bernoulli vbool359_B;
		// Messages to uses of 'vbool132'
		public Bernoulli[] vbool132_uses_F;
		// Message to definition of 'vbool343'
		public Bernoulli vbool343_B;
		// Messages to uses of 'vbool101'
		public Bernoulli[] vbool101_uses_F;
		// Message to definition of 'vbool327'
		public Bernoulli vbool327_B;
		// Messages to uses of 'vbool62'
		public Bernoulli[] vbool62_uses_F;
		// Message to definition of 'vbool471'
		public Bernoulli vbool471_B;
		// Messages to uses of 'vbool179'
		public Bernoulli[] vbool179_uses_F;
		// Message to definition of 'vbool311'
		public Bernoulli vbool311_B;
		// Messages to uses of 'vbool54'
		public Bernoulli[] vbool54_uses_F;
		// Message to definition of 'vbool319'
		public Bernoulli vbool319_B;
		// Messages to uses of 'vbool80'
		public Bernoulli[] vbool80_uses_F;
		// Message to definition of 'vbool440'
		public Bernoulli vbool440_B;
		// Messages to uses of 'vbool171'
		public Bernoulli[] vbool171_uses_F;
		// The constant 'vBernoulli6'
		public Bernoulli vBernoulli6;
		// Message to definition of 'vbool295'
		public Bernoulli vbool295_B;
		// Messages to uses of 'vbool10'
		public Bernoulli[] vbool10_uses_F;
		// Message to definition of 'vbool335'
		public Bernoulli vbool335_B;
		// Messages to uses of 'vbool88'
		public Bernoulli[] vbool88_uses_F;
		// Message to definition of 'vbool432'
		public Bernoulli vbool432_B;
		// Messages to uses of 'vbool153'
		public Bernoulli[] vbool153_uses_F;
		// Message to definition of 'vbool472'
		public Bernoulli vbool472_B;
		// Message to marginal of 'vbool303'
		public Bernoulli vbool303_marginal_B;
		// Message to marginal of 'vbool367'
		public Bernoulli vbool367_marginal_B;
		// Message to marginal of 'vbool351'
		public Bernoulli vbool351_marginal_B;
		// Message to marginal of 'vbool359'
		public Bernoulli vbool359_marginal_B;
		// Message to marginal of 'vbool343'
		public Bernoulli vbool343_marginal_B;
		// Message to marginal of 'vbool327'
		public Bernoulli vbool327_marginal_B;
		// Message to marginal of 'vbool471'
		public Bernoulli vbool471_marginal_B;
		// Message to marginal of 'vbool311'
		public Bernoulli vbool311_marginal_B;
		// Message to marginal of 'vbool319'
		public Bernoulli vbool319_marginal_B;
		// Message to marginal of 'vbool440'
		public Bernoulli vbool440_marginal_B;
		// Message to marginal of 'vbool295'
		public Bernoulli vbool295_marginal_B;
		// Message to marginal of 'vbool335'
		public Bernoulli vbool335_marginal_B;
		// Message to marginal of 'vbool432'
		public Bernoulli vbool432_marginal_B;
		// Message to marginal of 'vbool472'
		public Bernoulli vbool472_marginal_B;
		// Message to marginal of 'vbool36'
		public Bernoulli vbool36_marginal_B;
		// Message to marginal of 'vbool28'
		public Bernoulli vbool28_marginal_B;
		// Message to marginal of 'vbool140'
		public Bernoulli vbool140_marginal_B;
		// Message to marginal of 'vbool124'
		public Bernoulli vbool124_marginal_B;
		// Message to marginal of 'vbool132'
		public Bernoulli vbool132_marginal_B;
		// Message to marginal of 'vbool101'
		public Bernoulli vbool101_marginal_B;
		// Message to marginal of 'vbool62'
		public Bernoulli vbool62_marginal_B;
		// Message to marginal of 'vbool179'
		public Bernoulli vbool179_marginal_B;
		// Message to marginal of 'vbool54'
		public Bernoulli vbool54_marginal_B;
		// Message to marginal of 'vbool80'
		public Bernoulli vbool80_marginal_B;
		// Message to marginal of 'vbool171'
		public Bernoulli vbool171_marginal_B;
		// Message to marginal of 'vbool10'
		public Bernoulli vbool10_marginal_B;
		// Message to marginal of 'vbool88'
		public Bernoulli vbool88_marginal_B;
		// Message to marginal of 'vbool153'
		public Bernoulli vbool153_marginal_B;
		#endregion

		#region Methods
		/// <summary>
		/// Configures constant values that will not change during the lifetime of the class.
		/// </summary>
		/// <remarks>
		/// This method should be called once only after the class is instantiated.  In future, it will likely become
		/// the class constructor.
		/// </remarks>
		public void Reset()
		{
			// Create array for 'vbool36_uses' backwards messages.
			this.vbool36_uses_B = new Bernoulli[1];
			this.vBernoulli44 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool36_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli44);
			}
			this.vbool36_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli44);
			// Message to 'vbool36' from Random factor
			this.vbool36_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli44);
			// Create array for 'vbool28_uses' backwards messages.
			this.vbool28_uses_B = new Bernoulli[2];
			this.vBernoulli36 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool28_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli36);
			}
			this.vbool28_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli36);
			// Message to 'vbool28' from Random factor
			this.vbool28_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli36);
			// Create array for 'vbool303_uses' backwards messages.
			this.vbool303_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool303_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool303_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool140_uses' backwards messages.
			this.vbool140_uses_B = new Bernoulli[3];
			this.vBernoulli148 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<3; _ind0++)
			{
				this.vbool140_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli148);
			}
			this.vbool140_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli148);
			// Message to 'vbool140' from Random factor
			this.vbool140_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli148);
			// Create array for 'vbool367_uses' backwards messages.
			this.vbool367_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool367_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool367_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool124_uses' backwards messages.
			this.vbool124_uses_B = new Bernoulli[2];
			this.vBernoulli132 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool124_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli132);
			}
			this.vbool124_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli132);
			// Message to 'vbool124' from Random factor
			this.vbool124_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli132);
			// Create array for 'vbool351_uses' backwards messages.
			this.vbool351_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool351_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool351_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool132_uses' backwards messages.
			this.vbool132_uses_B = new Bernoulli[2];
			this.vBernoulli140 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool132_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli140);
			}
			this.vbool132_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli140);
			// Message to 'vbool132' from Random factor
			this.vbool132_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli140);
			// Create array for 'vbool359_uses' backwards messages.
			this.vbool359_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool359_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool359_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool101_uses' backwards messages.
			this.vbool101_uses_B = new Bernoulli[2];
			this.vBernoulli109 = new Bernoulli(0.01);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool101_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli109);
			}
			this.vbool101_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli109);
			// Message to 'vbool101' from Random factor
			this.vbool101_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli109);
			// Create array for 'vbool343_uses' backwards messages.
			this.vbool343_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool343_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool343_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool62_uses' backwards messages.
			this.vbool62_uses_B = new Bernoulli[3];
			this.vBernoulli70 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<3; _ind0++)
			{
				this.vbool62_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli70);
			}
			this.vbool62_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli70);
			// Message to 'vbool62' from Random factor
			this.vbool62_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli70);
			// Create array for 'vbool327_uses' backwards messages.
			this.vbool327_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool327_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool327_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool179_uses' backwards messages.
			this.vbool179_uses_B = new Bernoulli[2];
			this.vBernoulli187 = new Bernoulli(0.01);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool179_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli187);
			}
			this.vbool179_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli187);
			// Message to 'vbool179' from Random factor
			this.vbool179_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli187);
			// Create array for 'vbool471_uses' backwards messages.
			this.vbool471_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool471_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool471_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool54_uses' backwards messages.
			this.vbool54_uses_B = new Bernoulli[2];
			this.vBernoulli62 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool54_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli62);
			}
			this.vbool54_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli62);
			// Message to 'vbool54' from Random factor
			this.vbool54_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli62);
			// Create array for 'vbool311_uses' backwards messages.
			this.vbool311_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool311_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool311_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool80_uses' backwards messages.
			this.vbool80_uses_B = new Bernoulli[2];
			this.vBernoulli88 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool80_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli88);
			}
			this.vbool80_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli88);
			// Message to 'vbool80' from Random factor
			this.vbool80_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli88);
			// Create array for 'vbool319_uses' backwards messages.
			this.vbool319_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool319_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool319_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool171_uses' backwards messages.
			this.vbool171_uses_B = new Bernoulli[2];
			this.vBernoulli179 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool171_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli179);
			}
			this.vbool171_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli179);
			// Message to 'vbool171' from Random factor
			this.vbool171_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli179);
			// Create array for 'vbool440_uses' backwards messages.
			this.vbool440_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool440_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool440_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool10_uses' backwards messages.
			this.vbool10_uses_B = new Bernoulli[1];
			this.vBernoulli18 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool10_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli18);
			}
			this.vbool10_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli18);
			// Message to 'vbool10' from Random factor
			this.vbool10_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli18);
			// Create array for 'vbool295_uses' backwards messages.
			this.vbool295_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool295_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool295_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool88_uses' backwards messages.
			this.vbool88_uses_B = new Bernoulli[2];
			this.vBernoulli96 = new Bernoulli(0.01);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool88_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli96);
			}
			this.vbool88_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli96);
			// Message to 'vbool88' from Random factor
			this.vbool88_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli96);
			// Create array for 'vbool335_uses' backwards messages.
			this.vbool335_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool335_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool335_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool153_uses' backwards messages.
			this.vbool153_uses_B = new Bernoulli[2];
			this.vBernoulli161 = new Bernoulli(0.01);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool153_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli161);
			}
			this.vbool153_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli161);
			// Message to 'vbool153' from Random factor
			this.vbool153_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli161);
			// Create array for 'vbool432_uses' backwards messages.
			this.vbool432_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool432_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool432_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool472_uses' backwards messages.
			this.vbool472_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool472_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool472_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool303_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool28_uses' forwards messages.
			this.vbool28_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool28_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli36);
			}
			// Create array for 'vbool36_uses' forwards messages.
			this.vbool36_uses_F = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool36_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli44);
			}
			// Message to 'vbool36_uses' from UsesEqualDef factor
			this.vbool36_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool36_uses_B, this.vbool36_F, 0, this.vbool36_uses_F[0]);
			this.vbool367_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool140_uses' forwards messages.
			this.vbool140_uses_F = new Bernoulli[3];
			for(int _ind0 = 0; _ind0<3; _ind0++)
			{
				this.vbool140_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli148);
			}
			this.vBernoulli5 = new Bernoulli(0.9);
			// Message to 'vbool303_uses' from EqualRandom factor
			this.vbool303_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool367_uses' from EqualRandom factor
			this.vbool367_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool351_uses' from EqualRandom factor
			this.vbool351_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool359_uses' from EqualRandom factor
			this.vbool359_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool343_uses' from EqualRandom factor
			this.vbool343_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool327_uses' from EqualRandom factor
			this.vbool327_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool311_uses' from EqualRandom factor
			this.vbool311_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool319_uses' from EqualRandom factor
			this.vbool319_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool440_uses' from EqualRandom factor
			this.vbool440_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool295_uses' from EqualRandom factor
			this.vbool295_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool335_uses' from EqualRandom factor
			this.vbool335_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool432_uses' from EqualRandom factor
			this.vbool432_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool303' from ReplicateWithMarginal factor
			this.vbool303_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool303_uses_B, this.vbool303_B);
			// Message to 'vbool28_uses' from AreEqual factor
			this.vbool28_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool303_B, this.vbool36_uses_F[0]);
			// Message to 'vbool367' from ReplicateWithMarginal factor
			this.vbool367_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool367_uses_B, this.vbool367_B);
			// Message to 'vbool28_uses' from UsesEqualDef factor
			this.vbool28_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool28_uses_B, this.vbool28_F, 1, this.vbool28_uses_F[1]);
			// Message to 'vbool140_uses' from AreEqual factor
			this.vbool140_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool367_B, this.vbool28_uses_F[1]);
			this.vbool351_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool351' from ReplicateWithMarginal factor
			this.vbool351_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool351_uses_B, this.vbool351_B);
			// Create array for 'vbool124_uses' forwards messages.
			this.vbool124_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool124_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli132);
			}
			this.vbool359_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool359' from ReplicateWithMarginal factor
			this.vbool359_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool359_uses_B, this.vbool359_B);
			// Create array for 'vbool132_uses' forwards messages.
			this.vbool132_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool132_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli140);
			}
			this.vbool343_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool343' from ReplicateWithMarginal factor
			this.vbool343_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool343_uses_B, this.vbool343_B);
			// Create array for 'vbool101_uses' forwards messages.
			this.vbool101_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool101_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli109);
			}
			this.vbool327_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool327' from ReplicateWithMarginal factor
			this.vbool327_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool327_uses_B, this.vbool327_B);
			// Create array for 'vbool62_uses' forwards messages.
			this.vbool62_uses_F = new Bernoulli[3];
			for(int _ind0 = 0; _ind0<3; _ind0++)
			{
				this.vbool62_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli70);
			}
			this.vbool471_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool179_uses' forwards messages.
			this.vbool179_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool179_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli187);
			}
			this.vbool311_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool311' from ReplicateWithMarginal factor
			this.vbool311_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool311_uses_B, this.vbool311_B);
			// Create array for 'vbool54_uses' forwards messages.
			this.vbool54_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool54_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli62);
			}
			this.vbool319_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool319' from ReplicateWithMarginal factor
			this.vbool319_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool319_uses_B, this.vbool319_B);
			// Create array for 'vbool80_uses' forwards messages.
			this.vbool80_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool80_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli88);
			}
			this.vbool440_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool440' from ReplicateWithMarginal factor
			this.vbool440_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool440_uses_B, this.vbool440_B);
			// Create array for 'vbool171_uses' forwards messages.
			this.vbool171_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool171_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli179);
			}
			this.vBernoulli6 = new Bernoulli(0.9);
			// Message to 'vbool471_uses' from EqualRandom factor
			this.vbool471_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli6);
			// Message to 'vbool472_uses' from EqualRandom factor
			this.vbool472_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli6);
			// Message to 'vbool471' from ReplicateWithMarginal factor
			this.vbool471_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool471_uses_B, this.vbool471_B);
			this.vbool295_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool295' from ReplicateWithMarginal factor
			this.vbool295_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool295_uses_B, this.vbool295_B);
			// Create array for 'vbool10_uses' forwards messages.
			this.vbool10_uses_F = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool10_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli18);
			}
			// Message to 'vbool10_uses' from UsesEqualDef factor
			this.vbool10_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool10_uses_B, this.vbool10_F, 0, this.vbool10_uses_F[0]);
			// Message to 'vbool54_uses' from AreEqual factor
			this.vbool54_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool295_B, this.vbool10_uses_F[0]);
			// Message to 'vbool54_uses' from UsesEqualDef factor
			this.vbool54_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool54_uses_B, this.vbool54_F, 0, this.vbool54_uses_F[0]);
			// Message to 'vbool62_uses' from AreEqual factor
			this.vbool62_uses_B[1] = BooleanAreEqualOp.AAverageConditional(this.vbool311_B, this.vbool54_uses_F[0]);
			this.vbool335_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool335' from ReplicateWithMarginal factor
			this.vbool335_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool335_uses_B, this.vbool335_B);
			// Create array for 'vbool88_uses' forwards messages.
			this.vbool88_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool88_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli96);
			}
			this.vbool432_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool432' from ReplicateWithMarginal factor
			this.vbool432_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool432_uses_B, this.vbool432_B);
			// Create array for 'vbool153_uses' forwards messages.
			this.vbool153_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool153_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli161);
			}
			this.vbool472_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool472' from ReplicateWithMarginal factor
			this.vbool472_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool472_uses_B, this.vbool472_B);
		}

		/// <summary>
		/// Creates message arrays and initialises their values ready for inference to be performed.
		/// </summary>
		/// <remarks>
		/// This method should be called once each time inference is performed. Since the initialisation
		/// procedure normally dependson external values such as priors and array sizes, all external
		/// values must be set before calling this method.
		/// 
		/// As well as initialising message arrays, this method also performs any message passing that
		/// the scheduler determines need only be carried out once.
		/// </remarks>
		public void Initialise()
		{
			this.vbool303_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool367_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool351_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool359_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool343_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool327_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool471_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool311_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool319_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool440_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool295_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool335_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool432_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool472_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool36_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli44);
			this.vbool28_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli36);
			this.vbool140_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli148);
			this.vbool124_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli132);
			this.vbool132_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli140);
			this.vbool101_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli109);
			this.vbool62_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli70);
			this.vbool179_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli187);
			this.vbool54_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli62);
			this.vbool80_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli88);
			this.vbool171_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli179);
			this.vbool10_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli18);
			this.vbool88_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli96);
			this.vbool153_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli161);
		}

		/// <summary>
		/// Performs one iteration of inference.
		/// </summary>
		/// <remarks>
		/// This method should be called multiple times, after calling Initialise(), in order to perform
		/// multiple iterations of message passing.  You can call methods to retrieve posterior marginals
		/// at any time - the returned marginal will be the estimated marginal given the current state of
		/// the message passing algorithm.  This can be useful for monitoring convergence of the algorithm.
		/// 
		/// Where the scheduler has determined inference can be performed without iteration, this method
		/// does nothing.
		/// </remarks>
		public void Update()
		{
			// Message to 'vbool140_uses' from UsesEqualDef factor
			this.vbool140_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool140_uses_B, this.vbool140_F, 1, this.vbool140_uses_F[1]);
			// Message to 'vbool124_uses' from AreEqual factor
			this.vbool124_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool351_B, this.vbool140_uses_F[1]);
			// Message to 'vbool124_uses' from UsesEqualDef factor
			this.vbool124_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool124_uses_B, this.vbool124_F, 1, this.vbool124_uses_F[1]);
			// Message to 'vbool101_uses' from AreEqual factor
			this.vbool101_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool343_B, this.vbool124_uses_F[1]);
			// Message to 'vbool101_uses' from UsesEqualDef factor
			this.vbool101_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool101_uses_B, this.vbool101_F, 1, this.vbool101_uses_F[1]);
			// Message to 'vbool179_uses' from AreEqual factor
			this.vbool179_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool471_B, this.vbool101_uses_F[1]);
			// Message to 'vbool179_uses' from UsesEqualDef factor
			this.vbool179_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool179_uses_B, this.vbool179_F, 1, this.vbool179_uses_F[1]);
			// Message to 'vbool171_uses' from AreEqual factor
			this.vbool171_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool440_B, this.vbool179_uses_F[1]);
			// Message to 'vbool171_uses' from UsesEqualDef factor
			this.vbool171_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool171_uses_B, this.vbool171_F, 1, this.vbool171_uses_F[1]);
			// Message to 'vbool153_uses' from AreEqual factor
			this.vbool153_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool432_B, this.vbool171_uses_F[1]);
			// Message to 'vbool153_uses' from UsesEqualDef factor
			this.vbool153_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool153_uses_B, this.vbool153_F, 1, this.vbool153_uses_F[1]);
			// Message to 'vbool88_uses' from AreEqual factor
			this.vbool88_uses_B[1] = BooleanAreEqualOp.AAverageConditional(this.vbool472_B, this.vbool153_uses_F[1]);
			// Message to 'vbool88_uses' from UsesEqualDef factor
			this.vbool88_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool88_uses_B, this.vbool88_F, 0, this.vbool88_uses_F[0]);
			// Message to 'vbool80_uses' from AreEqual factor
			this.vbool80_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool335_B, this.vbool88_uses_F[0]);
			// Message to 'vbool80_uses' from UsesEqualDef factor
			this.vbool80_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool80_uses_B, this.vbool80_F, 0, this.vbool80_uses_F[0]);
			// Message to 'vbool62_uses' from AreEqual factor
			this.vbool62_uses_B[2] = BooleanAreEqualOp.AAverageConditional(this.vbool319_B, this.vbool80_uses_F[0]);
			// Message to 'vbool62_uses' from UsesEqualDef factor
			this.vbool62_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool62_uses_B, this.vbool62_F, 0, this.vbool62_uses_F[0]);
			// Message to 'vbool132_uses' from AreEqual factor
			this.vbool132_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool327_B, this.vbool62_uses_F[0]);
			// Message to 'vbool132_uses' from UsesEqualDef factor
			this.vbool132_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool132_uses_B, this.vbool132_F, 0, this.vbool132_uses_F[0]);
			// Message to 'vbool140_uses' from AreEqual factor
			this.vbool140_uses_B[2] = BooleanAreEqualOp.AAverageConditional(this.vbool359_B, this.vbool132_uses_F[0]);
			// Message to 'vbool140_uses' from UsesEqualDef factor
			this.vbool140_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool140_uses_B, this.vbool140_F, 0, this.vbool140_uses_F[0]);
			// Message to 'vbool28_uses' from AreEqual factor
			this.vbool28_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool367_B, this.vbool140_uses_F[0]);
			// Message to 'vbool28_marginal' from UsesEqualDef factor
			this.vbool28_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool28_uses_B, this.vbool28_F, this.vbool28_marginal_B);
			// Message to 'vbool367' from AreEqual factor
			this.vbool367_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool140_uses_F[0], this.vbool28_uses_F[1]);
			// Message to 'vbool367_marginal' from ReplicateWithMarginal factor
			this.vbool367_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool367_uses_B, this.vbool367_F, this.vbool367_marginal_B);
			// Message to 'vbool28_uses' from UsesEqualDef factor
			this.vbool28_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool28_uses_B, this.vbool28_F, 0, this.vbool28_uses_F[0]);
			// Message to 'vbool36_uses' from AreEqual factor
			this.vbool36_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool303_B, this.vbool28_uses_F[0]);
			// Message to 'vbool36_marginal' from UsesEqualDef factor
			this.vbool36_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool36_uses_B, this.vbool36_F, this.vbool36_marginal_B);
			// Message to 'vbool303' from AreEqual factor
			this.vbool303_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool36_uses_F[0], this.vbool28_uses_F[0]);
			// Message to 'vbool303_marginal' from ReplicateWithMarginal factor
			this.vbool303_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool303_uses_B, this.vbool303_F, this.vbool303_marginal_B);
			// Message to 'vbool140_uses' from UsesEqualDef factor
			this.vbool140_uses_F[2] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool140_uses_B, this.vbool140_F, 2, this.vbool140_uses_F[2]);
			// Message to 'vbool132_uses' from AreEqual factor
			this.vbool132_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool359_B, this.vbool140_uses_F[2]);
			// Message to 'vbool132_marginal' from UsesEqualDef factor
			this.vbool132_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool132_uses_B, this.vbool132_F, this.vbool132_marginal_B);
			// Message to 'vbool359' from AreEqual factor
			this.vbool359_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool140_uses_F[2], this.vbool132_uses_F[0]);
			// Message to 'vbool359_marginal' from ReplicateWithMarginal factor
			this.vbool359_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool359_uses_B, this.vbool359_F, this.vbool359_marginal_B);
			// Message to 'vbool132_uses' from UsesEqualDef factor
			this.vbool132_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool132_uses_B, this.vbool132_F, 1, this.vbool132_uses_F[1]);
			// Message to 'vbool62_uses' from AreEqual factor
			this.vbool62_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool327_B, this.vbool132_uses_F[1]);
			// Message to 'vbool62_marginal' from UsesEqualDef factor
			this.vbool62_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool62_uses_B, this.vbool62_F, this.vbool62_marginal_B);
			// Message to 'vbool327' from AreEqual factor
			this.vbool327_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool62_uses_F[0], this.vbool132_uses_F[1]);
			// Message to 'vbool327_marginal' from ReplicateWithMarginal factor
			this.vbool327_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool327_uses_B, this.vbool327_F, this.vbool327_marginal_B);
			// Message to 'vbool62_uses' from UsesEqualDef factor
			this.vbool62_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool62_uses_B, this.vbool62_F, 1, this.vbool62_uses_F[1]);
			// Message to 'vbool54_uses' from AreEqual factor
			this.vbool54_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool311_B, this.vbool62_uses_F[1]);
			// Message to 'vbool54_marginal' from UsesEqualDef factor
			this.vbool54_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool54_uses_B, this.vbool54_F, this.vbool54_marginal_B);
			// Message to 'vbool311' from AreEqual factor
			this.vbool311_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool62_uses_F[1], this.vbool54_uses_F[0]);
			// Message to 'vbool311_marginal' from ReplicateWithMarginal factor
			this.vbool311_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool311_uses_B, this.vbool311_F, this.vbool311_marginal_B);
			// Message to 'vbool62_uses' from UsesEqualDef factor
			this.vbool62_uses_F[2] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool62_uses_B, this.vbool62_F, 2, this.vbool62_uses_F[2]);
			// Message to 'vbool80_uses' from AreEqual factor
			this.vbool80_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool319_B, this.vbool62_uses_F[2]);
			// Message to 'vbool80_marginal' from UsesEqualDef factor
			this.vbool80_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool80_uses_B, this.vbool80_F, this.vbool80_marginal_B);
			// Message to 'vbool319' from AreEqual factor
			this.vbool319_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool62_uses_F[2], this.vbool80_uses_F[0]);
			// Message to 'vbool319_marginal' from ReplicateWithMarginal factor
			this.vbool319_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool319_uses_B, this.vbool319_F, this.vbool319_marginal_B);
			// Message to 'vbool54_uses' from UsesEqualDef factor
			this.vbool54_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool54_uses_B, this.vbool54_F, 1, this.vbool54_uses_F[1]);
			// Message to 'vbool10_uses' from AreEqual factor
			this.vbool10_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool295_B, this.vbool54_uses_F[1]);
			// Message to 'vbool10_marginal' from UsesEqualDef factor
			this.vbool10_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool10_uses_B, this.vbool10_F, this.vbool10_marginal_B);
			// Message to 'vbool295' from AreEqual factor
			this.vbool295_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool10_uses_F[0], this.vbool54_uses_F[1]);
			// Message to 'vbool295_marginal' from ReplicateWithMarginal factor
			this.vbool295_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool295_uses_B, this.vbool295_F, this.vbool295_marginal_B);
			// Message to 'vbool80_uses' from UsesEqualDef factor
			this.vbool80_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool80_uses_B, this.vbool80_F, 1, this.vbool80_uses_F[1]);
			// Message to 'vbool88_uses' from AreEqual factor
			this.vbool88_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool335_B, this.vbool80_uses_F[1]);
			// Message to 'vbool88_marginal' from UsesEqualDef factor
			this.vbool88_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool88_uses_B, this.vbool88_F, this.vbool88_marginal_B);
			// Message to 'vbool335' from AreEqual factor
			this.vbool335_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool88_uses_F[0], this.vbool80_uses_F[1]);
			// Message to 'vbool335_marginal' from ReplicateWithMarginal factor
			this.vbool335_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool335_uses_B, this.vbool335_F, this.vbool335_marginal_B);
			// Message to 'vbool88_uses' from UsesEqualDef factor
			this.vbool88_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool88_uses_B, this.vbool88_F, 1, this.vbool88_uses_F[1]);
			// Message to 'vbool153_uses' from AreEqual factor
			this.vbool153_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool472_B, this.vbool88_uses_F[1]);
			// Message to 'vbool153_marginal' from UsesEqualDef factor
			this.vbool153_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool153_uses_B, this.vbool153_F, this.vbool153_marginal_B);
			// Message to 'vbool472' from AreEqual factor
			this.vbool472_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool88_uses_F[1], this.vbool153_uses_F[1]);
			// Message to 'vbool472_marginal' from ReplicateWithMarginal factor
			this.vbool472_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool472_uses_B, this.vbool472_F, this.vbool472_marginal_B);
			// Message to 'vbool153_uses' from UsesEqualDef factor
			this.vbool153_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool153_uses_B, this.vbool153_F, 0, this.vbool153_uses_F[0]);
			// Message to 'vbool171_uses' from AreEqual factor
			this.vbool171_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool432_B, this.vbool153_uses_F[0]);
			// Message to 'vbool171_marginal' from UsesEqualDef factor
			this.vbool171_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool171_uses_B, this.vbool171_F, this.vbool171_marginal_B);
			// Message to 'vbool432' from AreEqual factor
			this.vbool432_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool153_uses_F[0], this.vbool171_uses_F[1]);
			// Message to 'vbool432_marginal' from ReplicateWithMarginal factor
			this.vbool432_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool432_uses_B, this.vbool432_F, this.vbool432_marginal_B);
			// Message to 'vbool171_uses' from UsesEqualDef factor
			this.vbool171_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool171_uses_B, this.vbool171_F, 0, this.vbool171_uses_F[0]);
			// Message to 'vbool179_uses' from AreEqual factor
			this.vbool179_uses_B[1] = BooleanAreEqualOp.AAverageConditional(this.vbool440_B, this.vbool171_uses_F[0]);
			// Message to 'vbool179_marginal' from UsesEqualDef factor
			this.vbool179_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool179_uses_B, this.vbool179_F, this.vbool179_marginal_B);
			// Message to 'vbool440' from AreEqual factor
			this.vbool440_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool179_uses_F[1], this.vbool171_uses_F[0]);
			// Message to 'vbool440_marginal' from ReplicateWithMarginal factor
			this.vbool440_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool440_uses_B, this.vbool440_F, this.vbool440_marginal_B);
			// Message to 'vbool179_uses' from UsesEqualDef factor
			this.vbool179_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool179_uses_B, this.vbool179_F, 0, this.vbool179_uses_F[0]);
			// Message to 'vbool101_uses' from AreEqual factor
			this.vbool101_uses_B[1] = BooleanAreEqualOp.AAverageConditional(this.vbool471_B, this.vbool179_uses_F[0]);
			// Message to 'vbool101_marginal' from UsesEqualDef factor
			this.vbool101_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool101_uses_B, this.vbool101_F, this.vbool101_marginal_B);
			// Message to 'vbool471' from AreEqual factor
			this.vbool471_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool101_uses_F[1], this.vbool179_uses_F[0]);
			// Message to 'vbool471_marginal' from ReplicateWithMarginal factor
			this.vbool471_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool471_uses_B, this.vbool471_F, this.vbool471_marginal_B);
			// Message to 'vbool101_uses' from UsesEqualDef factor
			this.vbool101_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool101_uses_B, this.vbool101_F, 0, this.vbool101_uses_F[0]);
			// Message to 'vbool124_uses' from AreEqual factor
			this.vbool124_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool343_B, this.vbool101_uses_F[0]);
			// Message to 'vbool124_marginal' from UsesEqualDef factor
			this.vbool124_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool124_uses_B, this.vbool124_F, this.vbool124_marginal_B);
			// Message to 'vbool343' from AreEqual factor
			this.vbool343_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool101_uses_F[0], this.vbool124_uses_F[1]);
			// Message to 'vbool343_marginal' from ReplicateWithMarginal factor
			this.vbool343_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool343_uses_B, this.vbool343_F, this.vbool343_marginal_B);
			// Message to 'vbool124_uses' from UsesEqualDef factor
			this.vbool124_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool124_uses_B, this.vbool124_F, 0, this.vbool124_uses_F[0]);
			// Message to 'vbool140_uses' from AreEqual factor
			this.vbool140_uses_B[1] = BooleanAreEqualOp.AAverageConditional(this.vbool351_B, this.vbool124_uses_F[0]);
			// Message to 'vbool140_marginal' from UsesEqualDef factor
			this.vbool140_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool140_uses_B, this.vbool140_F, this.vbool140_marginal_B);
			// Message to 'vbool351' from AreEqual factor
			this.vbool351_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool140_uses_F[1], this.vbool124_uses_F[0]);
			// Message to 'vbool351_marginal' from ReplicateWithMarginal factor
			this.vbool351_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool351_uses_B, this.vbool351_F, this.vbool351_marginal_B);
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool28' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool28Marginal()
		{
			return this.vbool28_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool367' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool367Marginal()
		{
			return this.vbool367_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool36' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool36Marginal()
		{
			return this.vbool36_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool303' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool303Marginal()
		{
			return this.vbool303_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool132' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool132Marginal()
		{
			return this.vbool132_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool359' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool359Marginal()
		{
			return this.vbool359_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool62' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool62Marginal()
		{
			return this.vbool62_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool327' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool327Marginal()
		{
			return this.vbool327_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool54' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool54Marginal()
		{
			return this.vbool54_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool311' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool311Marginal()
		{
			return this.vbool311_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool80' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool80Marginal()
		{
			return this.vbool80_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool319' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool319Marginal()
		{
			return this.vbool319_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool10' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool10Marginal()
		{
			return this.vbool10_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool295' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool295Marginal()
		{
			return this.vbool295_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool88' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool88Marginal()
		{
			return this.vbool88_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool335' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool335Marginal()
		{
			return this.vbool335_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool153' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool153Marginal()
		{
			return this.vbool153_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool472' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool472Marginal()
		{
			return this.vbool472_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool171' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool171Marginal()
		{
			return this.vbool171_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool432' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool432Marginal()
		{
			return this.vbool432_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool179' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool179Marginal()
		{
			return this.vbool179_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool440' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool440Marginal()
		{
			return this.vbool440_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool101' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool101Marginal()
		{
			return this.vbool101_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool471' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool471Marginal()
		{
			return this.vbool471_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool124' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool124Marginal()
		{
			return this.vbool124_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool343' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool343Marginal()
		{
			return this.vbool343_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool140' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool140Marginal()
		{
			return this.vbool140_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool351' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool351Marginal()
		{
			return this.vbool351_marginal_B;
		}

		#endregion

	}

}
